/*
 * rrc_asn_decoder.h
 *
 *  Created on: Apr 13, 2018
 *      Author: root
 */

#ifndef RRC_ASN_DECODER_H_
#define RRC_ASN_DECODER_H_

typedef unsigned int uint32_t;
typedef int int32_t;

typedef unsigned short uint16_t;
typedef short int16_t;

typedef unsigned char uint8_t;
typedef signed char int8_t;

#ifndef BOOL_DEFINED
#define BOOL_DEFINED
typedef unsigned char bool;

typedef void            OSVoid;
typedef void*           OSVoidPtr;
typedef unsigned char   OSBOOL;
typedef signed char     OSINT8;
typedef unsigned char   OSUINT8;
typedef short           OSINT16;
typedef unsigned short  OSUINT16;
typedef OSUINT8		OSOCTET;
typedef OSUINT8         OSUTF8CHAR;
typedef OSUINT16        OSUNICHAR;
typedef double          OSREAL;
typedef double          OSDOUBLE;
typedef float           OSFLOAT;
typedef int             OSINT32;
typedef unsigned int    OSUINT32;
typedef struct {  /* fixed-size bit string that can hold up to 32 bits */
   OSUINT32     numbits;
   OSOCTET      data[4];
} ASN1BitStr32;
typedef struct OSDynOctStr {
   OSUINT32     numocts;
   const OSOCTET* data;
} OSDynOctStr;


#endif

typedef struct /*SequenceOf FIXED=3*/_eNB_MCC
{
    uint32_t elm[3];
} eNB_MCC;
typedef struct /*SequenceOf FROM=2  TO=3*/_eNB_MNC
{
    uint32_t numberOfElements;
    uint32_t elm[3];
} eNB_MNC;

typedef struct _eNB_PLMN_Identity
{
    /*TODO : Remove the eNB_MNC and eNB_MCC struct from this .h file and replace the
     * next variables to uint32_t*/
    eNB_MCC mcc;
    eNB_MNC mnc;
} eNB_PLMN_Identity;
/*------------------------------------------------------------------------------------------------*/
/*!
 \struct   eNB_PLMN_Info

 \brief    description
 */
/*------------------------------------------------------------------------------------------------*/
typedef struct _eNB_PLMN_Info
{
    eNB_PLMN_Identity plmn_Identity;
    bool cellReservedForOperatorUse;
} eNB_PLMN_Info;
/*------------------------------------------------------------------------------------------------*/
/*!
 \struct   eNB_plmn_IdentityList

 \brief       description
 */
/*------------------------------------------------------------------------------------------------*/
typedef struct _eNB_PLMN_InfoList
{
    /*! */
    uint32_t numberOfElements;
    eNB_PLMN_Info elm[6];

} eNB_PLMN_InfoList;

typedef struct _tracking_Area_Code
{
	uint8_t byteContext[2];
}tracking_Area_Code;

typedef struct _cell_Identity
{
	uint8_t byteContext[4];
}cell_Identity;

typedef enum _isBarred
{
	barred = 0,
	notBarred = 1
}isBarred;

typedef enum _isAllowed
{
	allowed = 0,
	notallowed = 1
}isAllow;
typedef enum {
   SchedulingInfo_si_Periodicity_rf8 = 0,
   SchedulingInfo_si_Periodicity_rf16 = 1,
   SchedulingInfo_si_Periodicity_rf32 = 2,
   SchedulingInfo_si_Periodicity_rf64 = 3,
   SchedulingInfo_si_Periodicity_rf128 = 4,
   SchedulingInfo_si_Periodicity_rf256 = 5,
   SchedulingInfo_si_Periodicity_rf512 = 6
} SchedulingInfo_si_Periodicity;
typedef enum {
   r_SIB_Type_sibType3 = 0,
   r_SIB_Type_sibType4 = 1,
   r_SIB_Type_sibType5 = 2,
   r_SIB_Type_sibType6 = 3,
   r_SIB_Type_sibType7 = 4,
   r_SIB_Type_sibType8 = 5,
   r_SIB_Type_sibType9 = 6,
   r_SIB_Type_sibType10 = 7,
   r_SIB_Type_sibType11 = 8,
   r_SIB_Type_sibType12_v920 = 9,
   r_SIB_Type_sibType13_v920 = 10,
   SIB_Type_spare5 = 11,
   SIB_Type_spare4 = 12,
   SIB_Type_spare3 = 13,
   SIB_Type_spare2 = 14,
   SIB_Type_spare1 = 15,
   SIB_Type_UNKNOWN_
} SIB_Type;

typedef struct _SIB_MappingInfo {
   uint32_t n;
   SIB_Type elem[11];
} SIBMappingInfo;
typedef struct _Scheduling_Info
{
	SchedulingInfo_si_Periodicity si_Periodicity;
	SIBMappingInfo sib_MapInfo;

}SchedulingInfo;


typedef struct _SchedulingInfoList {
   int n;
   SchedulingInfo elem[32];
} SchedulingInfoList;

typedef enum {
   sib1_si_WindowLength_ms1 = 0,
   sib1_si_WindowLength_ms2 = 1,
   sib1_si_WindowLength_ms5 = 2,
   sib1_si_WindowLength_ms10 = 3,
   sib1_si_WindowLength_ms15 = 4,
   sib1_si_WindowLength_ms20 = 5,
   sib1_si_WindowLength_ms40 = 6,
   other

} SystemInformationBlockType1_si_WindowLength;

typedef struct _sib1
{
	eNB_PLMN_InfoList plmnList;
	tracking_Area_Code trackingAreaCode;
	cell_Identity cellIdentity;
	isBarred cellBarred;
	isAllow intraFreqReselection;
	int8_t Q_RxLevMin; // -70..-22
	uint16_t freqBandIndicator; // 1 - 256
	int8_t systemInfoValueTag;
	SchedulingInfoList schedulingInfoList;
	SystemInformationBlockType1_si_WindowLength si_WindowLength;

}sib1;

typedef enum {
   RACH_ConfigCommon_preambleInfo_numberOfRA_Preambles_n4 = 0,
   RACH_ConfigCommon_preambleInfo_numberOfRA_Preambles_n8 = 1,
   RACH_ConfigCommon_preambleInfo_numberOfRA_Preambles_n12 = 2,
   RACH_ConfigCommon_preambleInfo_numberOfRA_Preambles_n16 = 3,
   RACH_ConfigCommon_preambleInfo_numberOfRA_Preambles_n20 = 4,
   RACH_ConfigCommon_preambleInfo_numberOfRA_Preambles_n24 = 5,
   RACH_ConfigCommon_preambleInfo_numberOfRA_Preambles_n28 = 6,
   RACH_ConfigCommon_preambleInfo_numberOfRA_Preambles_n32 = 7,
   RACH_ConfigCommon_preambleInfo_numberOfRA_Preambles_n36 = 8,
   RACH_ConfigCommon_preambleInfo_numberOfRA_Preambles_n40 = 9,
   RACH_ConfigCommon_preambleInfo_numberOfRA_Preambles_n44 = 10,
   RACH_ConfigCommon_preambleInfo_numberOfRA_Preambles_n48 = 11,
   RACH_ConfigCommon_preambleInfo_numberOfRA_Preambles_n52 = 12,
   RACH_ConfigCommon_preambleInfo_numberOfRA_Preambles_n56 = 13,
   RACH_ConfigCommon_preambleInfo_numberOfRA_Preambles_n60 = 14,
   RACH_ConfigCommon_preambleInfo_numberOfRA_Preambles_n64 = 15
} RACH_ConfigCommon_preambleInfo_numberOfRA_Preambles;

typedef enum {
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_sizeOfRA_PreamblesGroupA_n4 = 0,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_sizeOfRA_PreamblesGroupA_n8 = 1,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_sizeOfRA_PreamblesGroupA_n12 = 2,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_sizeOfRA_PreamblesGroupA_n16 = 3,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_sizeOfRA_PreamblesGroupA_n20 = 4,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_sizeOfRA_PreamblesGroupA_n24 = 5,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_sizeOfRA_PreamblesGroupA_n28 = 6,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_sizeOfRA_PreamblesGroupA_n32 = 7,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_sizeOfRA_PreamblesGroupA_n36 = 8,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_sizeOfRA_PreamblesGroupA_n40 = 9,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_sizeOfRA_PreamblesGroupA_n44 = 10,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_sizeOfRA_PreamblesGroupA_n48 = 11,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_sizeOfRA_PreamblesGroupA_n52 = 12,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_sizeOfRA_PreamblesGroupA_n56 = 13,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_sizeOfRA_PreamblesGroupA_n60 = 14

} RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_sizeOfRA_PreamblesGroupA;

typedef enum {
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_messageSizeGroupA_b56 = 0,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_messageSizeGroupA_b144 = 1,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_messageSizeGroupA_b208 = 2,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_messageSizeGroupA_b256 = 3
} RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_messageSizeGroupA;

typedef enum {
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_messagePowerOffsetGroupB_minusinfinity = 0,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_messagePowerOffsetGroupB_dB0 = 1,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_messagePowerOffsetGroupB_dB5 = 2,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_messagePowerOffsetGroupB_dB8 = 3,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_messagePowerOffsetGroupB_dB10 = 4,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_messagePowerOffsetGroupB_dB12 = 5,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_messagePowerOffsetGroupB_dB15 = 6,
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_messagePowerOffsetGroupB_dB18 = 7
} RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_messagePowerOffsetGroupB;

typedef struct _RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig {
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_sizeOfRA_PreamblesGroupA sizeOfRA_PreamblesGroupA;
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_messageSizeGroupA messageSizeGroupA;
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig_messagePowerOffsetGroupB messagePowerOffsetGroupB;
} RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig;

typedef enum {
   RACH_ConfigCommon_powerRampingParameters_powerRampingStep_dB0 = 0,
   RACH_ConfigCommon_powerRampingParameters_powerRampingStep_dB2 = 1,
   RACH_ConfigCommon_powerRampingParameters_powerRampingStep_dB4 = 2,
   RACH_ConfigCommon_powerRampingParameters_powerRampingStep_dB6 = 3
} RACH_ConfigCommon_powerRampingParameters_powerRampingStep;

typedef enum {
   RACH_ConfigCommon_powerRampingParameters_preambleInitialReceivedTargetPower_dBm_120 = 0,
   RACH_ConfigCommon_powerRampingParameters_preambleInitialReceivedTargetPower_dBm_118 = 1,
   RACH_ConfigCommon_powerRampingParameters_preambleInitialReceivedTargetPower_dBm_116 = 2,
   RACH_ConfigCommon_powerRampingParameters_preambleInitialReceivedTargetPower_dBm_114 = 3,
   RACH_ConfigCommon_powerRampingParameters_preambleInitialReceivedTargetPower_dBm_112 = 4,
   RACH_ConfigCommon_powerRampingParameters_preambleInitialReceivedTargetPower_dBm_110 = 5,
   RACH_ConfigCommon_powerRampingParameters_preambleInitialReceivedTargetPower_dBm_108 = 6,
   RACH_ConfigCommon_powerRampingParameters_preambleInitialReceivedTargetPower_dBm_106 = 7,
   RACH_ConfigCommon_powerRampingParameters_preambleInitialReceivedTargetPower_dBm_104 = 8,
   RACH_ConfigCommon_powerRampingParameters_preambleInitialReceivedTargetPower_dBm_102 = 9,
   RACH_ConfigCommon_powerRampingParameters_preambleInitialReceivedTargetPower_dBm_100 = 10,
   RACH_ConfigCommon_powerRampingParameters_preambleInitialReceivedTargetPower_dBm_98 = 11,
   RACH_ConfigCommon_powerRampingParameters_preambleInitialReceivedTargetPower_dBm_96 = 12,
   RACH_ConfigCommon_powerRampingParameters_preambleInitialReceivedTargetPower_dBm_94 = 13,
   RACH_ConfigCommon_powerRampingParameters_preambleInitialReceivedTargetPower_dBm_92 = 14,
   RACH_ConfigCommon_powerRampingParameters_preambleInitialReceivedTargetPower_dBm_90 = 15
} RACH_ConfigCommon_powerRampingParameters_preambleInitialReceivedTargetPower;
typedef struct _RACH_ConfigCommon_powerRampingParameters {
   RACH_ConfigCommon_powerRampingParameters_powerRampingStep powerRampingStep;
   RACH_ConfigCommon_powerRampingParameters_preambleInitialReceivedTargetPower preambleInitialReceivedTargetPower;
} RACH_ConfigCommon_powerRampingParameters;

typedef enum {
   RACH_ConfigCommon_ra_SupervisionInfo_preambleTransMax_n3 = 0,
   RACH_ConfigCommon_ra_SupervisionInfo_preambleTransMax_n4 = 1,
   RACH_ConfigCommon_ra_SupervisionInfo_preambleTransMax_n5 = 2,
   RACH_ConfigCommon_ra_SupervisionInfo_preambleTransMax_n6 = 3,
   RACH_ConfigCommon_ra_SupervisionInfo_preambleTransMax_n7 = 4,
   RACH_ConfigCommon_ra_SupervisionInfo_preambleTransMax_n8 = 5,
   RACH_ConfigCommon_ra_SupervisionInfo_preambleTransMax_n10 = 6,
   RACH_ConfigCommon_ra_SupervisionInfo_preambleTransMax_n20 = 7,
   RACH_ConfigCommon_ra_SupervisionInfo_preambleTransMax_n50 = 8,
   RACH_ConfigCommon_ra_SupervisionInfo_preambleTransMax_n100 = 9,
   RACH_ConfigCommon_ra_SupervisionInfo_preambleTransMax_n200 = 10
} RACH_ConfigCommon_ra_SupervisionInfo_preambleTransMax;

typedef enum {
   RACH_ConfigCommon_ra_SupervisionInfo_ra_ResponseWindowSize_sf2 = 0,
   RACH_ConfigCommon_ra_SupervisionInfo_ra_ResponseWindowSize_sf3 = 1,
   RACH_ConfigCommon_ra_SupervisionInfo_ra_ResponseWindowSize_sf4 = 2,
   RACH_ConfigCommon_ra_SupervisionInfo_ra_ResponseWindowSize_sf5 = 3,
   RACH_ConfigCommon_ra_SupervisionInfo_ra_ResponseWindowSize_sf6 = 4,
   RACH_ConfigCommon_ra_SupervisionInfo_ra_ResponseWindowSize_sf7 = 5,
   RACH_ConfigCommon_ra_SupervisionInfo_ra_ResponseWindowSize_sf8 = 6,
   RACH_ConfigCommon_ra_SupervisionInfo_ra_ResponseWindowSize_sf10 = 7
} RACH_ConfigCommon_ra_SupervisionInfo_ra_ResponseWindowSize;

typedef enum {
   RACH_ConfigCommon_ra_SupervisionInfo_mac_ContentionResolutionTimer_sf8 = 0,
   RACH_ConfigCommon_ra_SupervisionInfo_mac_ContentionResolutionTimer_sf16 = 1,
   RACH_ConfigCommon_ra_SupervisionInfo_mac_ContentionResolutionTimer_sf24 = 2,
   RACH_ConfigCommon_ra_SupervisionInfo_mac_ContentionResolutionTimer_sf32 = 3,
   RACH_ConfigCommon_ra_SupervisionInfo_mac_ContentionResolutionTimer_sf40 = 4,
   RACH_ConfigCommon_ra_SupervisionInfo_mac_ContentionResolutionTimer_sf48 = 5,
   RACH_ConfigCommon_ra_SupervisionInfo_mac_ContentionResolutionTimer_sf56 = 6,
   RACH_ConfigCommon_ra_SupervisionInfo_mac_ContentionResolutionTimer_sf64 = 7
} RACH_ConfigCommon_ra_SupervisionInfo_mac_ContentionResolutionTimer;

typedef struct _RACH_ConfigCommon_preambleInfo {
   struct {
      unsigned preamblesGroupAConfigPresent : 1;
   } m;
   RACH_ConfigCommon_preambleInfo_numberOfRA_Preambles numberOfRA_Preambles;
   RACH_ConfigCommon_preambleInfo_preamblesGroupAConfig preamblesGroupAConfig;
} RACH_ConfigCommon_preambleInfo;

typedef struct _RACH_ConfigCommon_ra_SupervisionInfo {
   RACH_ConfigCommon_ra_SupervisionInfo_preambleTransMax preambleTransMax;
   RACH_ConfigCommon_ra_SupervisionInfo_ra_ResponseWindowSize ra_ResponseWindowSize;
   RACH_ConfigCommon_ra_SupervisionInfo_mac_ContentionResolutionTimer mac_ContentionResolutionTimer;
} RACH_ConfigCommon_ra_SupervisionInfo;
typedef struct _RACH_ConfigCommon {
   RACH_ConfigCommon_preambleInfo preambleInfo;
   RACH_ConfigCommon_powerRampingParameters powerRampingParameters;
   RACH_ConfigCommon_ra_SupervisionInfo ra_SupervisionInfo;
   OSUINT8 maxHARQ_Msg3Tx;
} RACH_ConfigCommon;

typedef enum {
   PCCH_Config_defaultPagingCycle_rf32 = 0,
   PCCH_Config_defaultPagingCycle_rf64 = 1,
   PCCH_Config_defaultPagingCycle_rf128 = 2,
   PCCH_Config_defaultPagingCycle_rf256 = 3
} PCCH_Config_defaultPagingCycle;

typedef enum {
   PCCH_Config_nB_fourT = 0,
   PCCH_Config_nB_twoT = 1,
   PCCH_Config_nB_oneT = 2,
   PCCH_Config_nB_halfT = 3,
   PCCH_Config_nB_quarterT = 4,
   PCCH_Config_nB_oneEighthT = 5,
   PCCH_Config_nB_oneSixteenthT = 6,
   PCCH_Config_nB_oneThirtySecondT = 7
} PCCH_Config_nB;

typedef struct _PCCH_Config {
   PCCH_Config_defaultPagingCycle defaultPagingCycle;
   PCCH_Config_nB nB;
} PCCHConfig;

typedef enum {
   BCCH_Config_modificationPeriodCoeff_n2 = 0,
   BCCH_Config_modificationPeriodCoeff_n4 = 1,
   BCCH_Config_modificationPeriodCoeff_n8 = 2,
   BCCH_Config_modificationPeriodCoeff_n16 = 3
} BCCHConfig_modificationPeriodCoeff;
typedef struct _PRACH_ConfigInfo {
   uint8_t prach_ConfigIndex;
   uint8_t highSpeedFlag;
   uint8_t zeroCorrelationZoneConfig;
   uint8_t prach_FreqOffset;
} PRACH_ConfigInfo;
typedef struct _PRACH_ConfigSIB {
   uint16_t rootSequenceIndex;
   PRACH_ConfigInfo prach_ConfigInfo;
} PRACHConfigSIB;
typedef struct _PDSCH_ConfigCommon {
   int8_t referenceSignalPower;
   uint8_t p_b;
} PDSCHConfigCommon;

typedef enum {
   PUSCH_ConfigCommon_pusch_ConfigBasic_hoppingMode_interSubFrame = 0,
   PUSCH_ConfigCommon_pusch_ConfigBasic_hoppingMode_intraAndInterSubFrame = 1
} PUSCH_ConfigCommon_pusch_ConfigBasic_hoppingMode;
typedef struct _PUSCH_ConfigCommon_pusch_ConfigBasic {
   OSUINT8 n_SB;
   PUSCH_ConfigCommon_pusch_ConfigBasic_hoppingMode hoppingMode;
   OSUINT8 pusch_HoppingOffset;
   OSBOOL enable64QAM;
} PUSCH_ConfigCommon_pusch_ConfigBasic;

typedef struct _UL_ReferenceSignalsPUSCH {
   OSBOOL groupHoppingEnabled;
   OSUINT8 groupAssignmentPUSCH;
   OSBOOL sequenceHoppingEnabled;
   OSUINT8 cyclicShift;
} UL_ReferenceSignalsPUSCH;

typedef struct _PUSCH_ConfigCommon {
   PUSCH_ConfigCommon_pusch_ConfigBasic pusch_ConfigBasic;
   UL_ReferenceSignalsPUSCH ul_ReferenceSignalsPUSCH;
} PUSCHConfigCommon;

typedef enum {
   PUCCH_ConfigCommon_deltaPUCCH_Shift_ds1 = 0,
   PUCCH_ConfigCommon_deltaPUCCH_Shift_ds2 = 1,
   PUCCH_ConfigCommon_deltaPUCCH_Shift_ds3 = 2
} PUCCH_ConfigCommon_deltaPUCCH_Shift;

typedef struct _PUCCH_ConfigCommon {
   PUCCH_ConfigCommon_deltaPUCCH_Shift deltaPUCCH_Shift;
   OSUINT8 nRB_CQI;
   OSUINT8 nCS_AN;
   OSUINT16 n1PUCCH_AN;
} PUCCHConfigCommon;

typedef enum {
   UplinkPowerControlCommon_alpha_al0 = 0,
   UplinkPowerControlCommon_alpha_al04 = 1,
   UplinkPowerControlCommon_alpha_al05 = 2,
   UplinkPowerControlCommon_alpha_al06 = 3,
   UplinkPowerControlCommon_alpha_al07 = 4,
   UplinkPowerControlCommon_alpha_al08 = 5,
   UplinkPowerControlCommon_alpha_al09 = 6,
   UplinkPowerControlCommon_alpha_al1 = 7
} UplinkPowerControlCommon_alpha;

typedef enum {
   DeltaFList_PUCCH_deltaF_PUCCH_Format1_deltaF_2 = 0,
   DeltaFList_PUCCH_deltaF_PUCCH_Format1_deltaF0 = 1,
   DeltaFList_PUCCH_deltaF_PUCCH_Format1_deltaF2 = 2
} DeltaFList_PUCCH_deltaF_PUCCH_Format1;

typedef enum {
   DeltaFList_PUCCH_deltaF_PUCCH_Format1b_deltaF1 = 0,
   DeltaFList_PUCCH_deltaF_PUCCH_Format1b_deltaF3 = 1,
   DeltaFList_PUCCH_deltaF_PUCCH_Format1b_deltaF5 = 2
} DeltaFList_PUCCH_deltaF_PUCCH_Format1b;

typedef enum {
   DeltaFList_PUCCH_deltaF_PUCCH_Format2_deltaF_2 = 0,
   DeltaFList_PUCCH_deltaF_PUCCH_Format2_deltaF0 = 1,
   DeltaFList_PUCCH_deltaF_PUCCH_Format2_deltaF1 = 2,
   DeltaFList_PUCCH_deltaF_PUCCH_Format2_deltaF2 = 3
} DeltaFList_PUCCH_deltaF_PUCCH_Format2;
typedef enum {
   DeltaFList_PUCCH_deltaF_PUCCH_Format2a_deltaF_2 = 0,
   DeltaFList_PUCCH_deltaF_PUCCH_Format2a_deltaF0 = 1,
   DeltaFList_PUCCH_deltaF_PUCCH_Format2a_deltaF2 = 2
} DeltaFList_PUCCH_deltaF_PUCCH_Format2a;

typedef enum {
   DeltaFList_PUCCH_deltaF_PUCCH_Format2b_deltaF_2 = 0,
   DeltaFList_PUCCH_deltaF_PUCCH_Format2b_deltaF0 = 1,
   DeltaFList_PUCCH_deltaF_PUCCH_Format2b_deltaF2 = 2
} DeltaFList_PUCCH_deltaF_PUCCH_Format2b;

typedef struct _DeltaFList_PUCCH {
   DeltaFList_PUCCH_deltaF_PUCCH_Format1 deltaF_PUCCH_Format1;
   DeltaFList_PUCCH_deltaF_PUCCH_Format1b deltaF_PUCCH_Format1b;
   DeltaFList_PUCCH_deltaF_PUCCH_Format2 deltaF_PUCCH_Format2;
   DeltaFList_PUCCH_deltaF_PUCCH_Format2a deltaF_PUCCH_Format2a;
   DeltaFList_PUCCH_deltaF_PUCCH_Format2b deltaF_PUCCH_Format2b;
} DeltaFList_PUCCH;




typedef struct _UplinkPowerControlCommon {
   OSINT8 p0_NominalPUSCH;
   UplinkPowerControlCommon_alpha alpha;
   OSINT8 p0_NominalPUCCH;
   DeltaFList_PUCCH deltaFList_PUCCH;
   OSINT8 deltaPreambleMsg3;
} UplinkPower_ControlCommon;

typedef enum {
   r_UL_CyclicPrefixLength_len1 = 0,
   r_UL_CyclicPrefixLength_len2 = 1
} UL_CyclicPrefix_Length;
typedef struct _RadioResourceConfigCommonSIB
{
	RACH_ConfigCommon rach_config_Common;
	BCCHConfig_modificationPeriodCoeff bcchConfig;
	PCCHConfig pcchConfig;
	PRACHConfigSIB prachConfig;
	PDSCHConfigCommon pdschConfigCommon;
	PUSCHConfigCommon puschConfigCommon;
	PUCCHConfigCommon pucchConfigCommon;
	//	   SoundingRS_UL_ConfigCommon soundingRS_UL_ConfigCommon;
	UplinkPower_ControlCommon uplinkPower_ControlCommon;
	UL_CyclicPrefix_Length ul_CyclicPrefix_Length;
	//	   OSRTDList extElem1;
}radioResourceConfigCommonSIB;
typedef enum {
   UE_TimersAndConstants_t300_ms100 = 0,
   UE_TimersAndConstants_t300_ms200 = 1,
   UE_TimersAndConstants_t300_ms300 = 2,
   UE_TimersAndConstants_t300_ms400 = 3,
   UE_TimersAndConstants_t300_ms600 = 4,
   UE_TimersAndConstants_t300_ms1000 = 5,
   UE_TimersAndConstants_t300_ms1500 = 6,
   UE_TimersAndConstants_t300_ms2000 = 7
} UE_TimersAndConstants_t300;
typedef enum {
   UE_TimersAndConstants_t301_ms100 = 0,
   UE_TimersAndConstants_t301_ms200 = 1,
   UE_TimersAndConstants_t301_ms300 = 2,
   UE_TimersAndConstants_t301_ms400 = 3,
   UE_TimersAndConstants_t301_ms600 = 4,
   UE_TimersAndConstants_t301_ms1000 = 5,
   UE_TimersAndConstants_t301_ms1500 = 6,
   UE_TimersAndConstants_t301_ms2000 = 7
} UE_TimersAndConstants_t301;
typedef enum {
   UE_TimersAndConstants_t310_ms0 = 0,
   UE_TimersAndConstants_t310_ms50 = 1,
   UE_TimersAndConstants_t310_ms100 = 2,
   UE_TimersAndConstants_t310_ms200 = 3,
   UE_TimersAndConstants_t310_ms500 = 4,
   UE_TimersAndConstants_t310_ms1000 = 5,
   UE_TimersAndConstants_t310_ms2000 = 6
} UE_TimersAndConstants_t310;

typedef enum {
   UE_TimersAndConstants_n310_n1 = 0,
   UE_TimersAndConstants_n310_n2 = 1,
   UE_TimersAndConstants_n310_n3 = 2,
   UE_TimersAndConstants_n310_n4 = 3,
   UE_TimersAndConstants_n310_n6 = 4,
   UE_TimersAndConstants_n310_n8 = 5,
   UE_TimersAndConstants_n310_n10 = 6,
   UE_TimersAndConstants_n310_n20 = 7
} UE_TimersAndConstants_n310;

typedef enum {
   UE_TimersAndConstants_t311_ms1000 = 0,
   UE_TimersAndConstants_t311_ms3000 = 1,
   UE_TimersAndConstants_t311_ms5000 = 2,
   UE_TimersAndConstants_t311_ms10000 = 3,
   UE_TimersAndConstants_t311_ms15000 = 4,
   UE_TimersAndConstants_t311_ms20000 = 5,
   UE_TimersAndConstants_t311_ms30000 = 6
} UE_TimersAndConstants_t311;

typedef enum {
   UE_TimersAndConstants_n311_n1 = 0,
   UE_TimersAndConstants_n311_n2 = 1,
   UE_TimersAndConstants_n311_n3 = 2,
   UE_TimersAndConstants_n311_n4 = 3,
   UE_TimersAndConstants_n311_n5 = 4,
   UE_TimersAndConstants_n311_n6 = 5,
   UE_TimersAndConstants_n311_n8 = 6,
   UE_TimersAndConstants_n311_n10 = 7
} UE_TimersAndConstants_n311;


typedef struct _UE_TimersAndConstants {
   UE_TimersAndConstants_t300 t300;
   UE_TimersAndConstants_t301 t301;
   UE_TimersAndConstants_t310 t310;
   UE_TimersAndConstants_n310 n310;
   UE_TimersAndConstants_t311 t311;
   UE_TimersAndConstants_n311 n311;
//   OSRTDList extElem1;
} ue_TimersAndConstants;
typedef OSUINT16 ARFCN_ValueEUTRA;
typedef enum {
   SystemInformationBlockType2_freqInfo_ul_Bandwidth_n6 = 0,
   SystemInformationBlockType2_freqInfo_ul_Bandwidth_n15 = 1,
   SystemInformationBlockType2_freqInfo_ul_Bandwidth_n25 = 2,
   SystemInformationBlockType2_freqInfo_ul_Bandwidth_n50 = 3,
   SystemInformationBlockType2_freqInfo_ul_Bandwidth_n75 = 4,
   SystemInformationBlockType2_freqInfo_ul_Bandwidth_n100 = 5
} SystemInformationBlockType2_freqInfo_ul_Bandwidth;
typedef OSUINT8 AdditionalSpectrumEmission;
typedef struct _SystemInformationBlockType2_freqInfo {
   struct {
      unsigned ul_CarrierFreqPresent : 1;
      unsigned ul_BandwidthPresent : 1;
   } m;
   ARFCN_ValueEUTRA ul_CarrierFreq;
   SystemInformationBlockType2_freqInfo_ul_Bandwidth ul_Bandwidth;
   AdditionalSpectrumEmission additionalSpectrumEmission;
} systemInformationBlockType2_freqInfo;

typedef enum {
   MBSFN_SubframeConfig_radioframeAllocationPeriod_n1 = 0,
   MBSFN_SubframeConfig_radioframeAllocationPeriod_n2 = 1,
   MBSFN_SubframeConfig_radioframeAllocationPeriod_n4 = 2,
   MBSFN_SubframeConfig_radioframeAllocationPeriod_n8 = 3,
   MBSFN_SubframeConfig_radioframeAllocationPeriod_n16 = 4,
   MBSFN_SubframeConfig_radioframeAllocationPeriod_n32 = 5
} MBSFN_SubframeConfig_radioframeAllocationPeriod;
typedef struct _MBSFN_SubframeConfig {
   MBSFN_SubframeConfig_radioframeAllocationPeriod radioframeAllocationPeriod;
   OSUINT8 radioframeAllocationOffset;
//   MBSFN_SubframeConfig_subframeAllocation subframeAllocation;
} MBSFN_SubframeConfig;

typedef struct _MBSFN_SubframeConfigList {
   OSUINT32 n;
   MBSFN_SubframeConfig elem[8];
} MBSFN_SubframeConfigList;


typedef enum {
   r_TimeAlignmentTimer_sf500 = 0,
   r_TimeAlignmentTimer_sf750 = 1,
   r_TimeAlignmentTimer_sf1280 = 2,
   r_TimeAlignmentTimer_sf1920 = 3,
   r_TimeAlignmentTimer_sf2560 = 4,
   r_TimeAlignmentTimer_sf5120 = 5,
   r_TimeAlignmentTimer_sf10240 = 6,
   r_TimeAlignmentTimer_infinity = 7
} r_TimeAlignmentTimer;
typedef struct _sib2
{
	bool ac_BarringFor_Emergency;
	radioResourceConfigCommonSIB radioResource_ConfigCommon;
	ue_TimersAndConstants ue_TimersAnd_Constants;
	systemInformationBlockType2_freqInfo freq_Info;
//	MBSFN_SubframeConfigList mbsfn_SubframeConfigList;
	r_TimeAlignmentTimer timeAlignmentTimer_Common;
//	OSDynOctStr lateNonCriticalExtension;
//	AC_BarringConfig ssac_BarringForMMTEL_Voice_r9;
//	AC_BarringConfig ssac_BarringForMMTEL_Video_r9;
}sib2;

typedef enum {
   SystemInformationBlockType3_cellReselectionInfoCommon_q_Hyst_dB0 = 0,
   SystemInformationBlockType3_cellReselectionInfoCommon_q_Hyst_dB1 = 1,
   SystemInformationBlockType3_cellReselectionInfoCommon_q_Hyst_dB2 = 2,
   SystemInformationBlockType3_cellReselectionInfoCommon_q_Hyst_dB3 = 3,
   SystemInformationBlockType3_cellReselectionInfoCommon_q_Hyst_dB4 = 4,
   SystemInformationBlockType3_cellReselectionInfoCommon_q_Hyst_dB5 = 5,
   SystemInformationBlockType3_cellReselectionInfoCommon_q_Hyst_dB6 = 6,
   SystemInformationBlockType3_cellReselectionInfoCommon_q_Hyst_dB8 = 7,
   SystemInformationBlockType3_cellReselectionInfoCommon_q_Hyst_dB10 = 8,
   SystemInformationBlockType3_cellReselectionInfoCommon_q_Hyst_dB12 = 9,
   SystemInformationBlockType3_cellReselectionInfoCommon_q_Hyst_dB14 = 10,
   SystemInformationBlockType3_cellReselectionInfoCommon_q_Hyst_dB16 = 11,
   SystemInformationBlockType3_cellReselectionInfoCommon_q_Hyst_dB18 = 12,
   SystemInformationBlockType3_cellReselectionInfoCommon_q_Hyst_dB20 = 13,
   SystemInformationBlockType3_cellReselectionInfoCommon_q_Hyst_dB22 = 14,
   SystemInformationBlockType3_cellReselectionInfoCommon_q_Hyst_dB24 = 15
} SystemInformationBlockType3_cellReselectionInfoCommon_q_Hyst;

typedef enum {
   MobilityStateParameters_t_Evaluation_s30 = 0,
   MobilityStateParameters_t_Evaluation_s60 = 1,
   MobilityStateParameters_t_Evaluation_s120 = 2,
   MobilityStateParameters_t_Evaluation_s180 = 3,
   MobilityStateParameters_t_Evaluation_s240 = 4,
   MobilityStateParameters_t_Evaluation_spare3 = 5,
   MobilityStateParameters_t_Evaluation_spare2 = 6,
   MobilityStateParameters_t_Evaluation_spare1 = 7
} MobilityStateParameters_t_Evaluation;

typedef enum {
   MobilityStateParameters_t_HystNormal_s30 = 0,
   MobilityStateParameters_t_HystNormal_s60 = 1,
   MobilityStateParameters_t_HystNormal_s120 = 2,
   MobilityStateParameters_t_HystNormal_s180 = 3,
   MobilityStateParameters_t_HystNormal_s240 = 4,
   MobilityStateParameters_t_HystNormal_spare3 = 5,
   MobilityStateParameters_t_HystNormal_spare2 = 6,
   MobilityStateParameters_t_HystNormal_spare1 = 7
} MobilityStateParameters_t_HystNormal;

typedef struct _MobilityStateParameters {
   MobilityStateParameters_t_Evaluation t_Evaluation;
   MobilityStateParameters_t_HystNormal t_HystNormal;
   OSUINT8 n_CellChangeMedium;
   OSUINT8 n_CellChangeHigh;
} MobilityStateParameters;

typedef enum {
   SystemInformationBlockType3_cellReselectionInfoCommon_speedStateReselectionPars_q_HystSF_sf_Medium_dB_6 = 0,
   SystemInformationBlockType3_cellReselectionInfoCommon_speedStateReselectionPars_q_HystSF_sf_Medium_dB_4 = 1,
   SystemInformationBlockType3_cellReselectionInfoCommon_speedStateReselectionPars_q_HystSF_sf_Medium_dB_2 = 2,
   SystemInformationBlockType3_cellReselectionInfoCommon_speedStateReselectionPars_q_HystSF_sf_Medium_dB0 = 3
} SystemInformationBlockType3_cellReselectionInfoCommon_speedStateReselectionPars_q_HystSF_sf_Medium;
typedef enum {
   SystemInformationBlockType3_cellReselectionInfoCommon_speedStateReselectionPars_q_HystSF_sf_High_dB_6 = 0,
   SystemInformationBlockType3_cellReselectionInfoCommon_speedStateReselectionPars_q_HystSF_sf_High_dB_4 = 1,
   SystemInformationBlockType3_cellReselectionInfoCommon_speedStateReselectionPars_q_HystSF_sf_High_dB_2 = 2,
   SystemInformationBlockType3_cellReselectionInfoCommon_speedStateReselectionPars_q_HystSF_sf_High_dB0 = 3
} SystemInformationBlockType3_cellReselectionInfoCommon_speedStateReselectionPars_q_HystSF_sf_High;

typedef struct _SystemInformationBlockType3_cellReselectionInfoCommon_speedStateReselectionPars_q_HystSF {
   SystemInformationBlockType3_cellReselectionInfoCommon_speedStateReselectionPars_q_HystSF_sf_Medium sf_Medium;
   SystemInformationBlockType3_cellReselectionInfoCommon_speedStateReselectionPars_q_HystSF_sf_High sf_High;
} SystemInformationBlockType3_cellReselectionInfoCommon_speedStateReselectionPars_q_HystSF;
typedef struct _SystemInformationBlockType3_cellReselectionInfoCommon_speedStateReselectionPars {
   MobilityStateParameters mobilityStateParameters;
   SystemInformationBlockType3_cellReselectionInfoCommon_speedStateReselectionPars_q_HystSF q_HystSF;
} SystemInformationBlockType3_cellReselectionInfoCommon_speedStateReselectionPars;
typedef struct _SystemInformationBlockType3_cellReselectionInfoCommon {
   struct {
      unsigned speedStateReselectionParsPresent : 1;
   } m;
   SystemInformationBlockType3_cellReselectionInfoCommon_q_Hyst q_Hyst;
   SystemInformationBlockType3_cellReselectionInfoCommon_speedStateReselectionPars SpeedStateReselectionPars;
} SystemInformationBlockType3_cellReselectionInfoCommon;

typedef OSUINT8 ReselectionThreshold;
typedef OSUINT8 CellReselectionPriority;
typedef struct _SystemInformationBlockType3_cellReselectionServingFreqInfo {
   struct {
      unsigned s_NonIntraSearchPresent : 1;
   } m;
   ReselectionThreshold s_NonIntraSearch;
   ReselectionThreshold threshServingLow;
   CellReselectionPriority cellReselectionPriority;
} SystemInformationBlockType3_cellReselectionServingFreqInfo;
typedef OSINT8 Q_RxLevMin;
typedef OSINT8 P_Max;

typedef enum {
   r_AllowedMeasBandwidth_mbw6 = 0,
   r_AllowedMeasBandwidth_mbw15 = 1,
   r_AllowedMeasBandwidth_mbw25 = 2,
   r_AllowedMeasBandwidth_mbw50 = 3,
   r_AllowedMeasBandwidth_mbw75 = 4,
   r_AllowedMeasBandwidth_mbw100 = 5
} AllowedMeasBandwidth;
typedef OSBOOL PresenceAntennaPort1;
typedef ASN1BitStr32 NeighCellConfig;
typedef OSUINT8 T_Reselection;

typedef enum {
   SpeedStateScaleFactors_sf_Medium_oDot25 = 0,
   SpeedStateScaleFactors_sf_Medium_oDot5 = 1,
   SpeedStateScaleFactors_sf_Medium_oDot75 = 2,
   SpeedStateScaleFactors_sf_Medium_lDot0 = 3
} SpeedStateScaleFactors_sf_Medium;
typedef enum {
   SpeedStateScaleFactors_sf_High_oDot25 = 0,
   SpeedStateScaleFactors_sf_High_oDot5 = 1,
   SpeedStateScaleFactors_sf_High_oDot75 = 2,
   SpeedStateScaleFactors_sf_High_lDot0 = 3
} SpeedStateScaleFactors_sf_High;
typedef struct _SpeedStateScaleFactors {
   SpeedStateScaleFactors_sf_Medium sf_Medium;
   SpeedStateScaleFactors_sf_High sf_High;
} SpeedStateScaleFactors;
typedef struct _SystemInformationBlockType3_intraFreqCellReselectionInfo {
   struct {
      unsigned p_MaxPresent : 1;
      unsigned s_IntraSearchPresent : 1;
      unsigned allowedMeasBandwidthPresent : 1;
      unsigned t_ReselectionEUTRA_SFPresent : 1;
   } m;
   Q_RxLevMin q_RxLevMin;
   P_Max p_Max;
   ReselectionThreshold s_IntraSearch;
   AllowedMeasBandwidth allowedMeasBandwidth;
   PresenceAntennaPort1 presenceAntennaPort1;
   NeighCellConfig neighCellConfig;
   T_Reselection t_ReselectionEUTRA;
   SpeedStateScaleFactors t_ReselectionEUTRA_SF;
} SystemInformationBlockType3_intraFreqCellReselectionInfo;


typedef OSUINT8 ReselectionThresholdQ_r9;
typedef struct _SystemInformationBlockType3_s_IntraSearch_v920 {
   ReselectionThreshold s_IntraSearchP_r9;
   ReselectionThresholdQ_r9 s_IntraSearchQ_r9;
} SystemInformationBlockType3_s_IntraSearch_v920;
typedef struct _SystemInformationBlockType3_s_NonIntraSearch_v920 {
   ReselectionThreshold s_NonIntraSearchP_r9;
   ReselectionThresholdQ_r9 s_NonIntraSearchQ_r9;
} SystemInformationBlockType3_s_NonIntraSearch_v920;
typedef OSINT8 Q_QualMin_r9;
typedef struct _sib3 {
   struct {
      unsigned lateNonCriticalExtensionPresent : 1;
      unsigned _v3ExtPresent : 1;
      unsigned s_IntraSearch_v920Present : 1;
      unsigned s_NonIntraSearch_v920Present : 1;
      unsigned q_QualMin_r9Present : 1;
      unsigned threshServingLowQ_r9Present : 1;
   } m;
   SystemInformationBlockType3_cellReselectionInfoCommon cellReselectionInfoCommon;
   SystemInformationBlockType3_cellReselectionServingFreqInfo cellReselectionServingFreqInfo;
   SystemInformationBlockType3_intraFreqCellReselectionInfo intraFreqCellReselectionInfo;
   OSDynOctStr lateNonCriticalExtension;
   SystemInformationBlockType3_s_IntraSearch_v920 s_IntraSearch_v920;
   SystemInformationBlockType3_s_NonIntraSearch_v920 s_NonIntraSearch_v920;
   Q_QualMin_r9 q_QualMin_r9;
   ReselectionThresholdQ_r9 threshServingLowQ_r9;
//   OSRTDList extElem1;
}sib3;

typedef enum {
   r_Q_OffsetRange_dB_24 = 0,
   r_Q_OffsetRange_dB_22 = 1,
   r_Q_OffsetRange_dB_20 = 2,
   r_Q_OffsetRange_dB_18 = 3,
   r_Q_OffsetRange_dB_16 = 4,
   r_Q_OffsetRange_dB_14 = 5,
   r_Q_OffsetRange_dB_12 = 6,
   r_Q_OffsetRange_dB_10 = 7,
   r_Q_OffsetRange_dB_8 = 8,
   r_Q_OffsetRange_dB_6 = 9,
   r_Q_OffsetRange_dB_5 = 10,
   r_Q_OffsetRange_dB_4 = 11,
   r_Q_OffsetRange_dB_3 = 12,
   r_Q_OffsetRange_dB_2 = 13,
   r_Q_OffsetRange_dB_1 = 14,
   r_Q_OffsetRange_dB0 = 15,
   r_Q_OffsetRange_dB1 = 16,
   r_Q_OffsetRange_dB2 = 17,
   r_Q_OffsetRange_dB3 = 18,
   r_Q_OffsetRange_dB4 = 19,
   r_Q_OffsetRange_dB5 = 20,
   r_Q_OffsetRange_dB6 = 21,
   r_Q_OffsetRange_dB8 = 22,
   r_Q_OffsetRange_dB10 = 23,
   r_Q_OffsetRange_dB12 = 24,
   r_Q_OffsetRange_dB14 = 25,
   r_Q_OffsetRange_dB16 = 26,
   r_Q_OffsetRange_dB18 = 27,
   r_Q_OffsetRange_dB20 = 28,
   r_Q_OffsetRange_dB22 = 29,
   r_Q_OffsetRange_dB24 = 30
} Q_OffsetRange;
typedef OSUINT16 PhysCellId;
typedef struct _InterFreqNeighCellInfo {
   PhysCellId physCellId;
   Q_OffsetRange q_OffsetCell;
} InterFreqNeighCellInfo;
typedef struct _InterFreqNeighCellList {
   OSUINT32 n;
   InterFreqNeighCellInfo elem[16];
} InterFreqNeighCellList;
typedef enum {
   PhysCellIdRange_range_n4 = 0,
   PhysCellIdRange_range_n8 = 1,
   PhysCellIdRange_range_n12 = 2,
   PhysCellIdRange_range_n16 = 3,
   PhysCellIdRange_range_n24 = 4,
   PhysCellIdRange_range_n32 = 5,
   PhysCellIdRange_range_n48 = 6,
   PhysCellIdRange_range_n64 = 7,
   PhysCellIdRange_range_n84 = 8,
   PhysCellIdRange_range_n96 = 9,
   PhysCellIdRange_range_n128 = 10,
   PhysCellIdRange_range_n168 = 11,
   PhysCellIdRange_range_n252 = 12,
   PhysCellIdRange_range_n504 = 13,
   PhysCellIdRange_range_spare2 = 14,
   PhysCellIdRange_range_spare1 = 15
} PhysCellIdRange_range;
typedef struct _PhysCellIdRange {
   struct {
      unsigned rangePresent : 1;
   } m;
   PhysCellId start;
   PhysCellIdRange_range range;
} PhysCellIdRange;

typedef struct _InterFreqBlackCellList {
   OSUINT32 n;
   PhysCellIdRange elem[16];
} InterFreqBlackCellList;
typedef struct _InterFreqCarrierFreqInfo_threshX_Q_r9 {
   ReselectionThresholdQ_r9 threshX_HighQ_r9;
   ReselectionThresholdQ_r9 threshX_LowQ_r9;
} InterFreqCarrierFreqInfo_threshX_Q_r9;

typedef struct _InterFreqCarrierFreqInfo {
   struct {
      unsigned p_MaxPresent : 1;
      unsigned t_ReselectionEUTRA_SFPresent : 1;
      unsigned cellReselectionPriorityPresent : 1;
      unsigned interFreqNeighCellListPresent : 1;
      unsigned interFreqBlackCellListPresent : 1;
      unsigned _v2ExtPresent : 1;
      unsigned q_QualMin_r9Present : 1;
      unsigned threshX_Q_r9Present : 1;
   } m;
   ARFCN_ValueEUTRA dl_CarrierFreq;
   Q_RxLevMin q_RxLevMin;
   P_Max p_Max;
   T_Reselection t_ReselectionEUTRA;
   SpeedStateScaleFactors t_ReselectionEUTRA_SF;
   ReselectionThreshold threshX_High;
   ReselectionThreshold threshX_Low;
   AllowedMeasBandwidth allowedMeasBandwidth;
   PresenceAntennaPort1 presenceAntennaPort1;
   CellReselectionPriority cellReselectionPriority;
   NeighCellConfig neighCellConfig;
   Q_OffsetRange q_OffsetFreq;
   InterFreqNeighCellList interFreqNeighCellList;
   InterFreqBlackCellList interFreqBlackCellList;
   Q_QualMin_r9 q_QualMin_r9;
   InterFreqCarrierFreqInfo_threshX_Q_r9 threshX_Q_r9;
//   OSRTDList extElem1;
} InterFreqCarrierFreqInfo;


typedef struct _InterFreqCarrierFreqList {
   OSUINT32 n;
   InterFreqCarrierFreqInfo elem[8];
} InterFreqCarrierFreqList;

typedef struct _sib5 {
   struct {
      unsigned lateNonCriticalExtensionPresent : 1;
   } m;
   InterFreqCarrierFreqList interFreqCarrierFreqList;
   OSDynOctStr lateNonCriticalExtension;
//   OSRTDList extElem1;
} sib5;


void fill_sib1_context(SystemInformationBlockType1_t* systemInformationBlockType1_Ptr);
void fill_sib2_context(SystemInformationBlockType2_t* SystemInformationBlockType2_Ptr);
void fill_sib3_context(SystemInformationBlockType3_t* SystemInformationBlockType3_Ptr);
void fill_sib5_context(SystemInformationBlockType5_t* SystemInformationBlockType5_Ptr);

#endif /* RRC_ASN_DECODER_H_ */
